#ifndef VItemDelegate_H
#define VItemDelegate_H

#include "VTreeNode.h"
#include "VItem.h"

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

class VEnumEditor : public QComboBox
{
	Q_OBJECT

public:
	VEnumEditor(const QMetaProperty &propEnum,QWidget *parent = 0);

	void setValue(const QVariant &value) { setCurrentIndex(value.toInt());}
	int value() const { return currentIndex();}
};

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

class VItemDelegate : public QStyledItemDelegate
{
	Q_OBJECT

public:
	VItemDelegate(QWidget *parent = 0) : QStyledItemDelegate(parent) {}

	QWidget *createEditor(QWidget *parent,const QStyleOptionViewItem &option,const QModelIndex &index) const;
	void setEditorData(QWidget *editor, const QModelIndex &index) const;
	void setModelData(QWidget *editor, QAbstractItemModel *model,const QModelIndex &index) const;
	
private:
	VTreeNode *nodeFromIndex(const QModelIndex &index) const;
};

///////////////////////////////////////////////////////////////////////////////

#endif
